//
//  BKLogManager.h
//  BukaLive
//
//  Created by 曹飞 on 2017/5/11.
//  Copyright © 2017年 曹飞. All rights reserved.
//
// 日志上传
#import <Foundation/Foundation.h>

#import "BKLog.h"

typedef NS_ENUM(NSInteger,logType){
    logTypeTop,         //上层日志
    logTypeSDKlog,      //sdk普通日志
    logTypeSDKStreamLog //stream日志
} ;


@interface BKLogManager : NSObject

+(instancetype)instance;


/**
 创建或者返回以有的文件路径

 @param fileName 文件名
 @return 创建或者返回以有的文件路径
 */
-(NSString*)creatFile:(NSString*)fileName;


/**
 手动归档日志

 @param logModel 归档类
 @param fileName 文件名
 */
-(void)saveLog:(id)logModel withFileName:(NSString *)fileName;


/**
 专门上传SDK 调用log日志

 @param nickName 当前用户的昵称
 @param userID 用户id
 @param roomID 房间id
 @param roomName 房间名称
 */
-(void)uplogWithNickName:(NSString *)nickName
              withUserID:(NSString *)userID
              withRoomID:(NSString *)roomID
            withRoomName:(NSString *)roomName;
/**
 日志copy另外一个文件

 @param sourcePath 原文件
 @param desPath 目标文件
 */
-(void)txtWrite:(NSString*)sourcePath toPath:(NSString *)desPath;

/**
 手动上传

 @param localFilePath 本地文件路径 通过 [self creatFile:]获得
 @param FileName 根据需求拼写上传到服务器的文件名
 @param dic post参数
 @param subUrl 接口名
 @param block 回调
 */
-(void)uploadFileWithlocalFilePath:(NSString *)localFilePath
                    withUpFileName:(NSString *)FileName
                withPostParameters:(NSDictionary*)dic
                        withSubUrl:(NSString*)subUrl
                         withBlock:(void(^)(NSDictionary *resultDic, NSError *error))block;




/**
 获取当前记录的所有日志

 @return 日志
 */
-(NSMutableArray*)loadLogFile:(NSString*)fileName;


/**
 保存日志

 @param logModel 模型
 @param size 多少条
 @param block 是否超过文件存储大小,和文件路径，文件路径需要判断是否存在，超过设置大小会删除
 */
-(void)saveLog:(id)logModel
   withSizeOff:(NSUInteger)size
  withFileName:(NSString *)fileName
withPostParameter:(NSString *)room
withUploadFileName:(NSString *)UploadFileName
   withLogType:(logType)type
     withBlock:(void(^)(BOOL off,NSString * filePath))block;

/**
 清除所有日志
 */
-(void)clearLog:(logType)type
   withFileName:(NSString*)fileName;


//获取某个时间点的日志，因内部逻辑上传到服务器会清空，所以这里有可能是空的
-(NSArray * )getCurrentLog;
//清楚本地日志
-(void)clearLog;
@end
